/*
 * Copyright (c) 2025 Industrial Software Feature Database
 */
package com.comac.ins.common.biz.utils;

import java.util.Collection;
import java.util.Map;

import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;

import com.comac.ins.common.biz.enums.BizExceptionCodeEnum;
import com.comac.ins.common.biz.exception.BizException;

/**
 * 业务异常抛出工具类
 *
 * @author zhanghongyi
 * @date 2024/5/22 11:18
 * @description BizAssertUtil
 */
public class BizAssertUtil {
    /**
     * 为空抛异常
     *
     * @param check 字符串
     * @param msg   异常信息
     */
    public static void notBlank(String check, BizExceptionCodeEnum codeEnum, String msg) {
        if (StringUtils.isBlank(check)) {
            throw new BizException(codeEnum, msg);
        }
    }

    public static void notBlank(String check, String msg) {
        notBlank(check, BizExceptionCodeEnum.BIZ_EXCEPTION, msg);
    }


    /**
     * 非空抛异常
     *
     * @param check 字符串
     * @param msg   异常信息
     */
    public static void isBlank(String check, BizExceptionCodeEnum codeEnum, String msg) {
        if (StringUtils.isBlank(check)) {
            throw new BizException(codeEnum, msg);
        }
    }

    public static void isBlank(String check, String msg) {
        isBlank(check, BizExceptionCodeEnum.BIZ_EXCEPTION, msg);
    }


    /**
     * 为null抛异常
     *
     * @param check    需判断obj
     * @param codeEnum 错误码
     * @param msg      异常信息
     */
    public static void notNull(Object check, BizExceptionCodeEnum codeEnum, String msg) {
        if (null == check) {
            throw new BizException(codeEnum, msg);
        }
    }

    public static void notNull(Object check, String msg) {
        notNull(check, BizExceptionCodeEnum.BIZ_EXCEPTION, msg);
    }

    /**
     * 非null抛异常
     *
     * @param check    需判断obj
     * @param codeEnum 错误码
     * @param msg      异常信息
     */
    public static void isNull(Object check, BizExceptionCodeEnum codeEnum, String msg) {
        if (null != check) {
            throw new BizException(codeEnum, msg);
        }
    }

    public static void isNull(Object check, String msg) {
        isNull(check, BizExceptionCodeEnum.BIZ_EXCEPTION, msg);
    }


    /**
     * 为空抛异常
     *
     * @param check    集合
     * @param codeEnum 错误码
     * @param msg      异常信息
     */
    public static void notEmpty(Collection<?> check, BizExceptionCodeEnum codeEnum, String msg) {
        if (CollectionUtils.isEmpty(check)) {
            throw new BizException(codeEnum, msg);
        }
    }

    public static void notEmpty(Collection<?> check, String msg) {
        notEmpty(check, BizExceptionCodeEnum.BIZ_EXCEPTION, msg);
    }
    /**
     * 非空抛异常
     *
     * @param check    集合
     * @param codeEnum 错误码
     * @param msg      异常信息
     */
    public static void isEmpty(Collection<?> check, BizExceptionCodeEnum codeEnum, String msg) {
        if (!CollectionUtils.isEmpty(check)) {
            throw new BizException(codeEnum, msg);
        }
    }

    public static void isEmpty(Collection<?> check, String msg) {
        isEmpty(check, BizExceptionCodeEnum.BIZ_EXCEPTION, msg);
    }

    /**
     * 为空抛异常
     *
     * @param check    集合
     * @param codeEnum 错误码
     * @param msg      异常信息
     */
    public static void notEmpty(Map<String, ?> check, BizExceptionCodeEnum codeEnum, String msg) {
        if (MapUtils.isEmpty(check)) {
            throw new BizException(codeEnum, msg);
        }
    }

    public static void notEmpty(Map<String, ?> check, String msg) {
        notEmpty(check, BizExceptionCodeEnum.BIZ_EXCEPTION, msg);
    }

    /**
     * 非空抛异常
     *
     * @param check    集合
     * @param codeEnum 错误码
     * @param msg      异常信息
     */
    public static void isEmpty(Map<String, ?> check, BizExceptionCodeEnum codeEnum, String msg) {
        if (!MapUtils.isEmpty(check)) {
            throw new BizException(codeEnum, msg);
        }
    }

    public static void isEmpty(Map<String, ?> check, String msg) {
        isEmpty(check, BizExceptionCodeEnum.BIZ_EXCEPTION, msg);
    }


    /**
     * 不为true抛异常
     *
     * @param check    判断变量
     * @param codeEnum 错误码
     * @param msg      错误信息
     */
    public static void isTrue(boolean check, BizExceptionCodeEnum codeEnum, String msg) {
        if (!check) {
            throw new BizException(codeEnum, msg);
        }
    }

    public static void isTrue(boolean check, String msg) {
        isTrue(check, BizExceptionCodeEnum.BIZ_EXCEPTION, msg);
    }

    /**
     * 为true抛异常
     *
     * @param check    判断变量
     * @param codeEnum 错误码
     * @param msg      错误信息
     */
    public static void isFalse(boolean check, BizExceptionCodeEnum codeEnum, String msg) {
        if (check) {
            throw new BizException(codeEnum, msg);
        }
    }

    public static void isFalse(boolean check, String msg) {
        isFalse(check, BizExceptionCodeEnum.BIZ_EXCEPTION, msg);
    }
}
